package com.huluobo.kotlindemoim1911a2.extention

/**
 * Created by lc on 2022/10/19.
 * 扩展方法
 * kotlin 的特性之一
 * String.是目标的类型,想给哪个类或者类型加上自定义的方法
 * isValidUserName(),这是方法名,原则上可以自己随意定义
 * :Boolean ,当前自定义方法的返回值
 */
//验证一个String是否符合3-20位字符,并且首字符为英文
fun String.isValidUserName(): Boolean = matches(Regex("^[a-zA-Z]\\w{2,19}$"))

//验证密码是否为3-20位数字
fun String.isValidPassword(): Boolean = matches(Regex("^[0-9]{3,20}$"))

//1."map",取map中每个值,相当于循环或者迭代
//2."Pair",new了一个Pair对象,把map中每个kv值都存储到Pair对象当中
//3."toTypedArray",new了一个数组(集合),将Pair对象一个个的存进去
//4.最终意义是将一个map转换为一个存有该map所有值(对象)的一个list
//5.<K,V>相当于形参

fun <K, V> MutableMap<K, V>.toVarargArray(): Array<Pair<K, V>> {
    return map {
        Pair(it.key, it.value)
    }.toTypedArray()
}

